package com.yami.shop.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yami.shop.bean.model.Blockchain;
import com.yami.shop.bean.model.Brand;
import com.yami.shop.common.util.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 * @author yami
 */
public interface BlockchainMapper extends BaseMapper<Blockchain> {


    /**
     * 根据链平台查找条件参数查找链平台列表
     *
     * @param blockchain 链平台查找条件参数
     * @return 链平台列表
     */
    List<Blockchain> blockchainList(@Param("blockchain") Blockchain blockchain);


    /**
     * 分页（重载） - 根据链平台查找条件参数查找链平台列表[语言]
     *
     * @param pageParam
     * @param blockchain
     * @return
     */
    IPage<Blockchain> blockchainLangList(PageParam<Blockchain> pageParam, @Param("blockchain") Blockchain blockchain);

    /**
     * 根据条件查找链平台列表
     *
     * @param status 状态
     * @return 链平台列表
     */
    List<Blockchain> listByLang(@Param("status") Integer status);

    /**
     * 根据链平台ID
     *
     * @param blockchainId 链平台ID
     * @return 链平台信息
     */
    Blockchain getBlockchain(@Param("blockchainIdId") Long blockchainId);

    /**
     * 根据名称查找名称相同的链平台数量，如果设置了category_id参数，则等于category_id等于该参数的链平台不参与运算
     *
     * @param blockchain 链平台查找参数
     * @return 相同名称的数量
     */
    Integer getBlockchainName(@Param("blockchain") Blockchain blockchain);

    /**
     * 根据链平台id列表，获取链平台列表
     *
     * @param blockchainIds
     * @return
     */
    List<Blockchain> getListByBlockchainIds(@Param("blockchainIds") Set<Long> blockchainIds);


    /**
     * 更新链平台状态（启用或禁用）
     *
     * @param blockchain
     */
    void updateBlockchainStatus(@Param("blockchain") Blockchain blockchain);

    /**
     * 获取链平台列表
     * @param blockchain
     * @return
     */
    List<Blockchain> listByParams(@Param("blockchain") Blockchain blockchain);

    Blockchain getInfoByCode(@Param("code")String code);

    /**
     * 功能描述: <br>
     * @Author: LSR
     * @Date: 2023/4/20 11:34
     */
    HashMap<String,String> getChainMap();
}
